Reverse Engineering through Formal
نویسنده
چکیده
In this paper we will take a detailed look at a larger example of program analysis by transformation. We will be considering Algorithm 2.3.3.A from Knuth's \Fundamental Algorithms" Knuth (1968) (P.357) which is an algorithm for the addition of polynomials represented using four-directional links. Knuth (1974) describes this as having \a complicated structure with excessively unrestrained goto statements" and goes on to say \I hope someday to see the algorithm cleaned up without loss of its eeciency". Our aim is to manipulate the program, using semantics-preserving operations, into an equivalent high-level speciication. The transformations are carried out in the WSL language, a \wide spectrum language" which includes both low-level program operations and high level speciications, and which has been speciically designed to be easy to transform.
منابع مشابه
Reverse Engineering Distributed Algorithms
Recently, formal approaches to reverse engineering have received considerable attention as a means of creating correct high level specifications. We show how a formal approach to reverse engineering can be applied when constructing distributed systems, eg. if we want to reuse an existing algorithm, but in a different environment, or develop a new distributed algorithm that is somehow similar to...
متن کاملA Suite of Tools for Facilitating Reverse Engineering Using Formal Methods
As a program evolves, it becomes increasingly difficult to understand and reason about changes in source code. Eventually, if enough changes are made without a corresponding modification of the software documentation, reverse engineering and design recovery techniques must be used in order to understand the current behavior of a system. In our previous investigations, we described a formal tech...
متن کاملFacilitating the Maintenance of Safety-Critical Systems
As software is increasingly used to control safety-critical systems, correctness becomes paramount. Formal methods in software development provide many bene ts in the forward engineering aspect of software development. Reverse Engineering is the process of constructing a high level representation of a system from existing lower level instantiations of that system. Reverse engineering of program...
متن کاملThe Representation Problem in Reverse Engineering
Building models to understand software systems is an important part of reverse engineering. Formal and explicit model building is important because it focuses attention on modeling as an aid to understanding and results in artifacts that may be useful to others. The representation used to build models has great innuence over the success and value of the result. Choosing the proper representatio...
متن کاملA Two - Phase Approach to Reverse EngineeringUsing Formal
Reverse engineering of program code is the process of constructing a higher level abstraction of an implementation in order to facilitate the understanding of a system that may be in a \legacy" or \geriatric" state. Changing architectures and improvements in programming methods, including formal methods in software development and object-oriented programming , have prompted a need to reverse en...
متن کاملA Formal Approach for Reverse Engineering: A Case Study
As a program evolves, it becomes increasingly difficult to understand and reason about changes in the source code. Eventually, if enough changes are made, reverse engineering and design recovery techniques must be used in order to understand the current behavior of a system. In this context, the effective use of complementary approaches can facilitate program and system understanding by taking ...
متن کامل